﻿namespace VisualPhysics.Scene.Core

/// Represent an acceleration (not only constant).
type AccelerationManager =
    /// <summary>Gets the acceleration at a given time.</summary>
    /// <param name="Time">The time.</param>
    /// <returns>The acceleration.</returns>
    abstract member GetAcceleration : time:float<s> -> MVector<cm / s ^ 2>
    /// <summary>Gets the velocity at a given time.</summary>
    /// <param name="Time">The time.</param>
    /// <param name="InitialV">The initial velocity.</param>
    /// <returns>The velocity.</returns>
    abstract member GetVelocity : time:float<s> -> initialV:MVector<cm / s> -> MVector<cm / s>
    /// <summary>Gets the position at a given time.</summary>
    /// <param name="Time">The time.</param>
    /// <param name="InitialV">The initial velocity.</param>
    /// <param name="InitialP">The initial position.</param>
    /// <returns>The position.</returns>
    abstract member GetPosition : time:float<s> -> initialV:MVector<cm / s> -> initialP:MVector<cm> -> MVector<cm>